package chapter07;

/**
 * Created by Miracle yaochengwei on 2022/7/2 13:33
 */
public class ConstructorDetail {
    static class Dog {
//如果程序员没有定义构造器，系统会自动给类生成一个默认无参构造器(也叫默认构造器)
// 使用javap指合反编译看看
        //默认构造器Dog()
        //一旦定义了自己的构造器,默认的构造器就覆盖了，就不能再使用默认的无参构造器,
// 除非显式的定义一下,即:Dog(){写(这点很重要)
      public Dog(String dName){

      }
      Dog(){//显式的构造一下无参构造器

      }
    }
        static class Person{
        String name;
        int age;
        //下面两个构造器，构成构造器的重载
        //第一个构造器
        public Person(String pName,int pAge){
            name =pName;
            age = pAge;//默认0
        }
        //第二个构造器，只指定任命，不需要指定年龄
        public Person(String pName){
            name =pName;
        }

    }
    public static void main(String[] args) {
        Person p1 =  new Person("KING",40);//第一个构造器
        Person p2 =  new Person("d");//第二个构造器
        System.out.println(p2.age);
        Dog dog1 = new Dog();//使用的是默认的无参构造器
    }
}
